{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "dct={d.split()[i]:int(a.split()[i]) for i in range(len(d.split()))}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'丧': 652, '中': 93798, '为': 78501, '乐': 6217, '什': 1417, '传': 7130, '假': 3306, '冠': 1008, '分': 8737, '划': 2306, '削': 821, '勒': 4327, '卒': 695, '卷': 3931, '叉': 855, '只': 101632, '吐': 2578, '咯': 878, '哄': 679, '圈': 4231, '地': 229365, '奔': 4098, '宁': 2371, '将': 48615, '岗': 505, '差': 2494, '应': 4535, '度': 1742, '弹': 2079, '当': 42900, '待': 5224, '得': 129541, '扇': 2592, '担': 1005, '拧': 671, '挑': 2954, '挨': 1598, '撒': 2738, '教': 4831, '散': 2273, '数': 7604, '斗': 3039, '旋': 390, '晃': 1545, '杆': 1354, '查': 3685, '校': 825, '模': 296, '横': 1760, '溜': 3128, '漂': 1111, '炸': 1529, '片': 5453, '盛': 2257, '相': 6100, '禁': 534, '称': 5362, '空': 5385, '系': 2781, '缝': 2588, '翘': 783, '背': 8538, '舍': 1302, '蒙': 4059, '藏': 7942, '血': 5486, '行': 12356, '观': 1834, '觉': 2963, '调': 2000, '载': 1839, '重': 9882, '量': 1125, '钉': 1292, '铺': 3199, '长': 37061, '降': 1543, '难': 8803}\n"
     ]
    }
   ],
   "source": [
    "print(dct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "metadata": {},
   "outputs": [],
   "source": [
    "dct={'丧': 652, '中': 93798, '为': 78501, '乐': 6217, '什': 1417, '传': 7130, '假': 3306, '冠': 1008, '分': 8737, '划': 2306,\n",
    " '削': 821, '勒': 4327, '卒': 695, '卷': 3931, '叉': 855, '只': 101632, '吐': 2578, '咯': 878, '哄': 679, '圈': 4231, \n",
    " '地': 229365, '奔': 4098, '宁': 2371, '将': 48615, '岗': 505, '差': 2494, '应': 4535, '度': 1742, '弹': 2079, '当': 42900, \n",
    " '待': 5224, '得': 129541, '扇': 2592, '担': 1005, '拧': 671, '挑': 2954, '挨': 1598, '撒': 2738, '教': 4831, '散': 2273, \n",
    " '数': 7604, '斗': 3039, '旋': 390, '晃': 1545, '杆': 1354, '查': 3685, '校': 825, '模': 296, '横': 1760, '溜': 3128, \n",
    " '漂': 1111, '炸': 1529, '片': 5453, '盛': 2257, '相': 6100, '禁': 534, '称': 5362, '空': 5385, '系': 2781, '缝': 2588, \n",
    " '翘': 783, '背': 8538, '舍': 1302, '蒙': 4059, '藏': 7942, '血': 5486, '行': 12356, '观': 1834, '觉': 2963, '调': 2000, \n",
    " '载': 1839, '重': 9882, '量': 1125, '钉': 1292, '铺': 3199, '长': 37061, '降': 1543, '难': 8803}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'丧': 335, '中': 4832, '为': 29028, '乐': 2003, '什': 447, '传': 6706, '假': 1324, '冠': 455, '分': 2948, '划': 844, '削': 531, '勒': 1645, '卒': 563, '卷': 2565, '叉': 327, '只': 5288, '吐': 741, '咯': 68, '哄': 317, '圈': 1050, '地': 13818, '奔': 1162, '宁': 1087, '将': 2448, '岗': 94, '差': 11839, '应': 4885, '度': 695, '弹': 1643, '当': 9086, '待': 2857, '得': 11838, '扇': 665, '担': 363, '拧': 284, '挑': 1336, '挨': 660, '撒': 1470, '教': 2028, '散': 925, '数': 1490, '斗': 1037, '旋': 142, '晃': 2454, '杆': 587, '查': 1272, '校': 648, '模': 55, '横': 907, '溜': 862, '漂': 362, '炸': 522, '片': 1992, '盛': 3207, '相': 4779, '禁': 213, '称': 2266, '空': 2087, '系': 3666, '缝': 1473, '翘': 221, '背': 6863, '舍': 545, '蒙': 1013, '藏': 1483, '血': 1885, '行': 3735, '观': 748, '觉': 4185, '调': 1604, '载': 628, '重': 6494, '量': 852, '钉': 399, '铺': 1498, '长': 300962, '降': 712, '难': 2214, '露': 1074}\n"
     ]
    }
   ],
   "source": [
    "dct={w.split()[i]:int(n.split()[i]) for i in range(len(w.split()))}\n",
    "print(dct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [],
   "source": [
    "pre={w.split()[i]:float(n.split()[i]) for i in range(len(w.split()))}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'丧': 80.0, '中': 99.0, '为': 95.0, '乐': 90.54, '什': 93.1, '传': 98.99, '假': 96.0, '冠': 79.75, '分': 99.0, '划': 92.0, '削': 78.0, '勒': 90.0, '卒': 99.0, '卷': 95.91, '叉': 91.92, '只': 98.99, '吐': 86.0, '咯': 93.68, '哄': 85.42, '圈': 96.0, '地': 99.0, '奔': 89.69, '宁': 83.56, '将': 96.0, '岗': 98.33, '差': 90.0, '应': 78.49, '度': 100.0, '弹': 86.0, '当': 94.0, '待': 98.0, '得': 97.0, '扇': 97.0, '担': 92.93, '拧': 66.0, '挑': 93.94, '挨': 94.0, '撒': 94.15, '教': 86.0, '散': 88.0, '数': 96.79, '斗': 79.8, '旋': 85.0, '晃': 93.72, '杆': 70.0, '查': 98.39, '校': 87.76, '模': 89.13, '横': 98.0, '溜': 99.0, '漂': 96.0, '炸': 93.0, '片': 97.0, '盛': 97.61, '相': 94.12, '禁': 100.0, '称': 96.0, '空': 95.0, '系': 58.0, '缝': 99.1, '翘': 100.0, '背': 90.0, '舍': 77.01, '蒙': 92.11, '藏': 98.11, '血': 94.0, '行': 94.0, '观': 84.0, '觉': 95.65, '调': 85.0, '载': 85.71, '重': 85.86, '量': 78.0, '钉': 92.0, '铺': 92.82, '长': 96.91, '降': 90.0, '难': 96.88, '露': 97.53}\n"
     ]
    }
   ],
   "source": [
    "print(pre)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 177,
   "metadata": {},
   "outputs": [],
   "source": [
    "import json\n",
    "import matplotlib.pyplot as plt\n",
    "import re\n",
    "\n",
    "\n",
    "#按照数量分为大中小三组\n",
    "wlist=[t[0] for t in sorted([[k,dct[k]] for k in dct],key=lambda k:k[1])]\n",
    "small=wlist[:26]\n",
    "middle=wlist[26:52]\n",
    "large=wlist[52:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "path=\"D:/hasu/ppres/no-weight/\"\n",
    "slist,mlist,llist=[],[],[]\n",
    "for i in range(1,41):\n",
    "    s,m,l=0,0,0\n",
    "    with open(path+\"epoch_\"+str(i)+\".txt\",encoding='utf8') as f:\n",
    "        js=json.loads(f.read().split('\\n')[1])\n",
    "    for w in small:\n",
    "        s+=js[w]\n",
    "    for w in middle:\n",
    "        m+=js[w]\n",
    "    for w in large:\n",
    "        l+=js[w]\n",
    "    s/=26;m/=26;l/=26\n",
    "    slist.append(s)\n",
    "    mlist.append(m)\n",
    "    llist.append(l)\n",
    "\n",
    "plt.plot(list(range(40)), slist[:], label='small')\n",
    "plt.plot(list(range(40)), mlist[:], label='middle')\n",
    "plt.plot(list(range(40)), llist[:], label='large')\n",
    "\n",
    "path=\"D:/hasu/ppres/after-weight/\"\n",
    "slist,mlist,llist=[],[],[]\n",
    "for i in range(1,41):\n",
    "    s,m,l=0,0,0\n",
    "    with open(path+\"epoch_\"+str(i)+\".txt\",encoding='utf8') as f:\n",
    "        js=json.loads(f.read().split('\\n')[1])\n",
    "    for w in small:\n",
    "        s+=js[w]\n",
    "    for w in middle:\n",
    "        m+=js[w]\n",
    "    for w in large:\n",
    "        l+=js[w]\n",
    "    s/=26;m/=26;l/=26\n",
    "    slist.append(s)\n",
    "    mlist.append(m)\n",
    "    llist.append(l)\n",
    "\n",
    "plt.plot(list(range(40)), slist[:], label='small_a')\n",
    "plt.plot(list(range(40)), mlist[:], label='middle_a')\n",
    "plt.plot(list(range(40)), llist[:], label='large_a')\n",
    "\n",
    "plt.xlabel('x label')\n",
    "plt.ylabel('y label')\n",
    "\n",
    "plt.title(\"after weight\")\n",
    "\n",
    "plt.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 196,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'丧': 80.0,\n",
       " '中': 99.0,\n",
       " '为': 95.0,\n",
       " '乐': 90.54,\n",
       " '什': 93.1,\n",
       " '传': 98.99,\n",
       " '假': 96.0,\n",
       " '冠': 79.75,\n",
       " '分': 99.0,\n",
       " '划': 92.0,\n",
       " '削': 78.0,\n",
       " '勒': 90.0,\n",
       " '卒': 99.0,\n",
       " '卷': 95.91,\n",
       " '叉': 91.92,\n",
       " '只': 98.99,\n",
       " '吐': 86.0,\n",
       " '咯': 93.68,\n",
       " '哄': 85.42,\n",
       " '圈': 96.0,\n",
       " '地': 99.0,\n",
       " '奔': 89.69,\n",
       " '宁': 83.56,\n",
       " '将': 96.0,\n",
       " '岗': 98.33,\n",
       " '差': 90.0,\n",
       " '应': 78.49,\n",
       " '度': 100.0,\n",
       " '弹': 86.0,\n",
       " '当': 94.0,\n",
       " '待': 98.0,\n",
       " '得': 97.0,\n",
       " '扇': 97.0,\n",
       " '担': 92.93,\n",
       " '拧': 66.0,\n",
       " '挑': 93.94,\n",
       " '挨': 94.0,\n",
       " '撒': 94.15,\n",
       " '教': 86.0,\n",
       " '散': 88.0,\n",
       " '数': 96.79,\n",
       " '斗': 79.8,\n",
       " '旋': 85.0,\n",
       " '晃': 93.72,\n",
       " '杆': 70.0,\n",
       " '查': 98.39,\n",
       " '校': 87.76,\n",
       " '模': 89.13,\n",
       " '横': 98.0,\n",
       " '溜': 99.0,\n",
       " '漂': 96.0,\n",
       " '炸': 93.0,\n",
       " '片': 97.0,\n",
       " '盛': 97.61,\n",
       " '相': 94.12,\n",
       " '禁': 100.0,\n",
       " '称': 96.0,\n",
       " '空': 95.0,\n",
       " '系': 58.0,\n",
       " '缝': 99.1,\n",
       " '翘': 100.0,\n",
       " '背': 90.0,\n",
       " '舍': 77.01,\n",
       " '蒙': 92.11,\n",
       " '藏': 98.11,\n",
       " '血': 94.0,\n",
       " '行': 94.0,\n",
       " '观': 84.0,\n",
       " '觉': 95.65,\n",
       " '调': 85.0,\n",
       " '载': 85.71,\n",
       " '重': 85.86,\n",
       " '量': 78.0,\n",
       " '钉': 92.0,\n",
       " '铺': 92.82,\n",
       " '长': 96.91,\n",
       " '降': 90.0,\n",
       " '难': 96.88,\n",
       " '露': 97.53}"
      ]
     },
     "execution_count": 196,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import math\n",
    "path=\"D:/hasu/ppres/after-weight/epoch_19.txt\"\n",
    "with open(path,encoding='utf8') as f:\n",
    "    js=json.loads(f.read().split('\\n')[1])\n",
    "\n",
    "    \n",
    "cls=3\n",
    "sorted_words=[t[0] for t in sorted([[k,dct[k]] for k in dct],key=lambda k:k[1])]\n",
    "n=math.ceil(len(sorted_words)//cls)\n",
    "nlist=[0]*cls\n",
    "for i in range(cls):\n",
    "    for k in sorted_words[i*n:i*n+n]:\n",
    "        nlist[i]+=js[k]\n",
    "for i in range(len(nlist)):\n",
    "    if i!=len(nlist)-1:\n",
    "        nlist[i]/=n\n",
    "    else:\n",
    "        nlist[i]/=(len(sorted_words)-n*(len(nlist)-1))\n",
    "sp,mp,lp,so,mo,lo=0,0,0,0,0,0\n",
    "for w in small:\n",
    "    sp+=pre[w]\n",
    "    so+=js[w]\n",
    "sp/=len(small)\n",
    "so/=len(small)\n",
    "for w in middle:\n",
    "    mp+=pre[w]\n",
    "    mo+=js[w]\n",
    "mp/=len(middle)\n",
    "mo/=len(middle)\n",
    "for w in large:\n",
    "    lp+=pre[w]\n",
    "    lo+=js[w]\n",
    "lp/=len(large)\n",
    "lo/=len(large)\n",
    "previous,our=[sp,mp,lp],[so*100,mo*100,lo*100]\n",
    "\n",
    "x = np.arange(3)\n",
    "total_width, n = 0.8, 2     # 有多少个类型，只需更改n即可\n",
    "width = total_width / n\n",
    "x = x - (total_width - width) / 2\n",
    "plt.bar(x, previous,  width=width, label='a')\n",
    "plt.bar(x + width, our, width=width, label='b')\n",
    "\n",
    "plt.xlabel('x label')\n",
    "plt.ylabel('y label')\n",
    "\n",
    "plt.title(\"after weight\")\n",
    "\n",
    "plt.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 215,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "No handles with labels found to put in legend.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[86.9965, 91.4975, 91.09, 95.56611111111111]\n",
      "[91.40413699086662, 95.88168135787728, 95.40175594937568, 95.55288772449427]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import math\n",
    "path=\"D:/hasu/ppres/after-weight/epoch_19.txt\"\n",
    "with open(path,encoding='utf8') as f:\n",
    "    js=json.loads(f.read().split('\\n')[1])\n",
    "    \n",
    "cls=4\n",
    "x = np.arange(cls)\n",
    "total_width, n = 0.8, 2     # 有多少个类型，只需更改n即可\n",
    "width = total_width / n\n",
    "x = x - (total_width - width) / 2\n",
    "\n",
    "sorted_words=[t[0] for t in sorted([[k,dct[k]] for k in dct],key=lambda k:k[1])]\n",
    "n=math.ceil(len(sorted_words)/cls)\n",
    "nlist=[0]*cls\n",
    "for i in range(cls):\n",
    "    for k in sorted_words[i*n:i*n+n]:\n",
    "        nlist[i]+=pre[k]\n",
    "for i in range(len(nlist)):\n",
    "    if i!=len(nlist)-1:\n",
    "        nlist[i]=nlist[i]/n\n",
    "    else:\n",
    "        nlist[i]=nlist[i]/(len(sorted_words)-n*(len(nlist)-1))\n",
    "print(nlist)   \n",
    "plt.bar(x, nlist,  width=width)\n",
    "\n",
    "sorted_words=[t[0] for t in sorted([[k,dct[k]] for k in dct],key=lambda k:k[1])]\n",
    "n=math.ceil(len(sorted_words)/cls)\n",
    "nlist=[0]*cls\n",
    "for i in range(cls):\n",
    "    for k in sorted_words[i*n:i*n+n]:\n",
    "        nlist[i]+=js[k]\n",
    "for i in range(len(nlist)):\n",
    "    if i!=len(nlist)-1:\n",
    "        nlist[i]=nlist[i]/n*100\n",
    "    else:\n",
    "        nlist[i]=nlist[i]/(len(sorted_words)-n*(len(nlist)-1))*100\n",
    "\n",
    "plt.bar(x + width, nlist,  width=width)\n",
    "print(nlist)  \n",
    "\n",
    "\n",
    "plt.xlabel('x label')\n",
    "plt.ylabel('y label')\n",
    "\n",
    "plt.title(\"after weight\")\n",
    "\n",
    "plt.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 204,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[88.46133333333334,\n",
       " 88.636,\n",
       " 89.32066666666668,\n",
       " 93.02733333333335,\n",
       " 79.17777777777778]"
      ]
     },
     "execution_count": 204,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nlist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 190,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([70.,  2.,  1.,  1.,  2.,  1.,  0.,  0.,  0.,  1.]),\n",
       " array([   296. ,  23202.9,  46109.8,  69016.7,  91923.6, 114830.5,\n",
       "        137737.4, 160644.3, 183551.2, 206458.1, 229365. ]),\n",
       " <a list of 10 Patch objects>)"
      ]
     },
     "execution_count": 190,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sorted_words=[t[0] for t in sorted([[k,dct[k]] for k in dct],key=lambda k:k[1])]\n",
    "nums=[t[1] for t in sorted([[k,dct[k]] for k in dct],key=lambda k:k[1])]\n",
    "plt.hist(nums,alpha=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [],
   "source": [
    "cha=[]\n",
    "for w in wlist:\n",
    "    cha.append(js[w]*100-pre[w])\n",
    "ls=[]\n",
    "for i in range(0,len(cha),10):\n",
    "    ls.append(sum(cha[i:i+10])/len(cha[i:i+10]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<BarContainer object of 8 artists>"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.bar(np.arange(len(ls)),ls)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([ 9040., 22630., 27786., 26166., 21853., 16654., 12202.,  9298.,\n",
       "         5555.,  3968.,  2633.,  1917.,  1454.,  1045.,   726.,   583.,\n",
       "          460.,   375.,   284.]),\n",
       " array([  0,  10,  20,  30,  40,  50,  60,  70,  80,  90, 100, 110, 120,\n",
       "        130, 140, 150, 160, 170, 180, 190]),\n",
       " <a list of 19 Patch objects>)"
      ]
     },
     "execution_count": 155,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "path=\"D:/hasu/lengths.json\"\n",
    "with open(path,encoding='utf8') as f:\n",
    "    lens=json.loads(f.read())\n",
    "plt.hist(lens,np.arange(0,200,10),alpha=1)\n",
    "path=\"D:/hasu/lengths2.json\"\n",
    "with open(path,encoding='utf8') as f:\n",
    "    lens=json.loads(f.read())\n",
    "plt.hist(lens,np.arange(0,200,10),alpha=0.6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([ 9040., 22630., 27786., 26166., 21853., 16654., 12202.,  9298.,\n",
       "         5555.,  3968.,  2633.,  1917.,  1454.,  1045.,   726.,   583.,\n",
       "          460.,   375.,   284.]),\n",
       " array([  0,  10,  20,  30,  40,  50,  60,  70,  80,  90, 100, 110, 120,\n",
       "        130, 140, 150, 160, 170, 180, 190]),\n",
       " <a list of 19 Patch objects>)"
      ]
     },
     "execution_count": 138,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "path=\"D:/hasu/lengths2.json\"\n",
    "with open(path,encoding='utf8') as f:\n",
    "    lens=json.loads(f.read())\n",
    "plt.hist(lens,np.arange(0,200,10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [],
   "source": [
    "def cut_sent(para):\n",
    "    para = re.sub('([。！？\\?])([^”’])', r\"\\1\\n\\2\", para)  # 单字符断句符\n",
    "    para = re.sub('(\\.{6})([^”’])', r\"\\1\\n\\2\", para)  # 英文省略号\n",
    "    para = re.sub('(……)([^”’])', r\"\\1\\n\\2\", para)  # 中文省略号\n",
    "    para = re.sub('([。！？\\?][”’])([^，。！？\\?])', r'\\1\\n\\2', para)\n",
    "    # 如果双引号前有终止符，那么双引号才是句子的终点，把分句符\\n放到双引号后，注意前面的几句都小心保留了双引号\n",
    "    para = para.rstrip()  # 段尾如果有多余的\\n就去掉它\n",
    "    # 很多规则中会考虑分号;，但是这里我把它忽略不计，破折号、英文双引号等同样忽略，需要的再做些简单调整即可。\n",
    "    return para.split(\"\\n\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['黄喜全低着头说：“毛主任问我‘是不是不想往好处过了’，分明是点拨我，可我那个蠢老婆……”纪检书记站起来说：“我看你老婆一点都不蠢，倒是你，蠢透了，这种事情你担得下来？”']"
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cut_sent(\"黄喜全低着头说：“毛主任问我‘是不是不想往好处过了’，分明是点拨我，可我那个蠢老婆……”纪检书记站起来说：“我看你老婆一点都不蠢，倒是你，蠢透了，这种事情你担得下来？”\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'乘': 2545, '仔': 978, '伯': 5644, '作': 11794, '俩': 10719, '冲': 10713, '凉': 1611, '几': 37514, '凿': 751, '别': 15303, '劈': 1044, '占': 2336, '发': 8513, '号': 5833, '吓': 10770, '呱': 841, '咔': 980, '咖': 11, '咧': 495, '喝': 14788, '喷': 2130, '嘎': 1160, '嚼': 909, '塞': 5028, '壳': 1703, '奇': 6635, '好': 96637, '宿': 782, '强': 6350, '打': 33714, '把': 187544, '拉': 26168, '拓': 250, '择': 424, '搂': 1136, '撩': 145, '晕': 934, '暴': 432, '曝': 34, '更': 27651, '曾': 10455, '核': 465, '格': 9726, '殷': 631, '没': 59839, '泊': 372, '泡': 2206, '淋': 801, '炮': 1023, '熟': 1885, '的': 1788599, '省': 3526, '看': 93736, '种': 21160, '秤': 269, '笼': 911, '约': 3744, '肚': 1606, '脏': 1756, '脚': 12515, '荷': 869, '菲': 2354, '落': 11229, '趟': 1664, '蹬': 838, '还': 86997, '钻': 4787, '间': 14673, '雀': 720, '颤': 836}\n"
     ]
    }
   ],
   "source": [
    "dct={w.split()[i]:int(n.split()[i]) for i in range(len(w.split()))}\n",
    "print(dct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['伯', '吓', '拉', '殷', '菲', '凿', '熟', '看', '别', '喷', '打', '核', '约', '雀', '俩', '的', '格', '没', '择', '不', '嚼', '暴', '炮', '强', '奇', '脏', '好', '乘', '更', '号', '把', '省', '淋', '脚', '种', '几', '还', '一', '蹬', '作', '呱', '喝', '劈', '间', '笼', '凉', '秤', '泡', '壳', '趟', '颤', '占', '肚', '落', '荷', '冲', '搂', '发', '拓', '晕', '宿', '曾', '泊', '咖', '咔', '钻', '塞', '曝', '仔', '咧', '撩', '嘎']\n"
     ]
    }
   ],
   "source": [
    "print(w.split())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'b'"
      ]
     },
     "execution_count": 175,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import random\n",
    "random.choice(\"abc\")[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
